<!DOCTYPE html>
<html>
  <head>
    <title>JSIL - .NET to JavaScript compiler</title>
    <meta name="description" content="JSIL is an open source compiler that turns .NET applications, written in C# or VB.NET, into fast readable JavaScript.">
    <link rel="stylesheet" type="text/css" href="reset.css">
    <link rel="stylesheet" type="text/css" href="common.css">
    <link rel="stylesheet" type="text/css" href="index.css">
  </head>
  <body onLoad="onLoad()">
    <div id="content_box">
      <div id="introduction" class="rounded-box">
        <h1><img src="images/jsil_48px.png" id="logo">JSIL</h1>
        <p>JSIL is a compiler that transforms .NET applications and libraries from their native executable format - <a href="http://en.wikipedia.org/wiki/Common_Intermediate_Language">CIL bytecode</a> - into standards-compliant, cross-browser JavaScript. You can take this JavaScript and run it in a web browser or any other modern JavaScript runtime. Unlike other cross-compiler tools targeting JavaScript, JSIL produces easy-to-debug JavaScript while still maintaining the behavior and structure of the original .NET code. Because JSIL transforms bytecode, it can support most .NET-based languages - C# to JavaScript and VB.NET to JavaScript work right out of the box, and F# is partially supported. Nearly the entire feature set of the .NET runtime (including pointers and P/Invoke) is supported, and most of the open-source BCL is translatable by the compiler.</p>
      </div>
      <div id="demos" class="rounded-box">
        <h2>Demos</h2>
        <div id="demo_carousel" style="display: none">
          <div id="carousel_items">
            <a href="http://jsil.org/try" style="background-image: url(images/demos/try.jpg)">Try JSIL</a>
            <a href="http://www.playescapegoat.com/" style="background-image: url(images/demos/escapegoat.jpg)"><span style="font-size: 0.1pt">Escape Goat</span></a>
            <a href="http://hildr.luminance.org/SampleFNA/" style="background-image: url(images/demos/platformer.jpg)">XNA Platformer Sample (FNA + SDL2 + Emscripten)</a>
            <a href="http://hildr.luminance.org/Lumberjack/Lumberjack.html" style="background-image: url(images/demos/lumberjack.jpg)">Bytown Lumberjack</a>
            <a href="http://hildr.luminance.org/RPG/RPG.html" style="background-image: url(images/demos/rpg.jpg)">XNA RPG Sample</a>
            <a href="http://hildr.luminance.org/Raytracer/Raytracer.html" style="background-image: url(images/demos/raytracer.jpg)">Raytracer</a>
          </div>
        </div>
      </div>
      <div id="codesamples" class="rounded-box">
        <h2>Code Samples</h2>
        <span>See <a href="http://try.jsil.org/">try.jsil.org</a>.</span>
      </div>
      <div id="gettingstarted" class="rounded-box">
        <h2>Getting Started</h2>
        <h3>Use JSIL</h3>
        <ol>
          <li>Clone the repository using Git, from '<tt>https://github.com/sq/JSIL.git</tt>'. <span class="aside">(Make sure you pull the submodules!)</span></li>
          <li>Build <tt>JSIL.sln</tt> in Visual Studio 2015. <span class="aside">(Community Edition is sufficient.)</span></li>
          <li>Run <tt>JSILc.exe</tt> on your application. <span class="aside">(<a href="https://github.com/sq/JSIL/wiki">See the wiki for help</a>.)</span></li>
          <li>Marvel at convoluted error messages! <span class="aside">(JSIL is still in development. You will hit bugs.)</span></li>
        </ol>
        <h3>Contribute to JSIL</h3>
        <ol>
          <li><a href="https://github.com/sq/JSIL">Fork JSIL on GitHub</a>. <span class="aside">(Working locally from a clone is okay too.)</span></li>
          <li>Write tests for bugs or new features! <span class="aside">(Without tests, JSIL would always be broken.)</span></li>
          <li>Fix broken tests! Tests can be run from VS2015's integrated testing tools.<span class="aside">(Adding a test for a bug is helpful even if you can't fix it.)</span></li>
          <li>Push to your GitHub fork! <span class="aside">(If you don't, I can't see your awesome changes.)</span></li>
          <li><a href="https://github.com/sq/JSIL/pull/new/master">Create a pull request on GitHub</a>. <span class="aside">(Submitting a patch is okay too.)</span></li>
        </ol>
        <h3>Complain about JSIL</h3>
        <p>Not everybody has time to write code! That's okay. You can <a href="https://github.com/sq/JSIL/issues">report issues</a>, or just talk about JSIL on the internet or something!</p>
        <p>
<div class="g-plusone" data-size="medium" data-href="http://jsil.org/"></div>
<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://jsil.org/" data-via="antumbral">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
<!-- Place this tag where you want the +1 button to render -->

<!-- Place this render call where appropriate -->
<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script></p>
      </div>
      <div id="changelog" class="rounded-box">
        <h2>Changelog <span id="branch_list"></span> <a href="https://github.com/sq/JSIL/commits/master" id="view_on_github">View on GitHub</a></h2>        
        <div id="changelog_loading_placeholder">Loading...</div>
        <div id="changelog_entries" style="display: none">
        </div>
      </div>      
      <div id="aboutauthor" class="rounded-box">
        <h2>About the Author</h2>
        <p>K. Gadd is a rampaging malcontent from Northern California who works on horrible indie games and complains incessantly about first-world problems on <a href="http://www.twitter.com/antumbral">Twitter</a>.
      </div>
    </div>
    
    <div class="changelog-entry" id="changelog_entry_template" style="display: none">
      <img class="author-image" alt="Author's Avatar">
      <div class="header"><a class="author">Author</a><a class="datetime"><span class="date">Date</span> <span class="time">Time</span></a></div>
      <div class="message"><span class="text">Message</span></div>
    </div>
    
    <div id="footer">Logo by the impeccable <a href="http://bryneshrimp.com/">John Flynn</a></div>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
    <script src="md5-min.js" type="text/javascript"></script>
    <script src="jquery.carousel.min.js" type="text/javascript"></script>
    <script src="index.js?v2" type="text/javascript"></script>
    
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-6375004-6']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>
  </body>
</html>